### プロジェクト13 ミニランプ **1. 説明** このプロジェクトでは、Arduino UNOとボタンを使ってランプを制御します。ボタンを押すと、ランプの状態が切り替わります(ONまたはOFF)。 **2. 動作原理** ![](media/A152.png) ボタンが離されているとき、R29を通る電圧VCCがS端子にハイレベルを供給します。押されると、ピン1と3、ピン2と4が接続され、S1の電圧がGNDに到達してロー レベルになります。この時、R29はVCCとGND間のショートを防ぎます。 **3. 配線図** ![](media/A153.png) **4. テストコード** 1. 基本ブロックを2つ追加します。 ![](media/A154.png) 2. “Serial”から「baud rate」をドラッグし、9600に設定します。 ![](media/A155.png) 3. 次に“Serial”から「print」ブロックをドラッグし、空欄に「Key status:」と入力し、「no-warp」に設定します。 ![](media/A156.png) 4. IO15ピンを「input」に設定します。 ![](media/A157.png) 5. もう一つ“Serial print”ブロックを“Serial”からドラッグし、モードを「warp」に設定します。“Button”から「state value of button」を追加し、ピンをIO15に設定します。 ![](media/A158.png) **完成コード:** ![](media/A159.png) **5. テスト結果** 配線を接続しコードをアップロードした後、シリアルモニターを開き、ボーレートを9600に設定します。 ボタンを押すとシリアルポートに「Key status: 0」と表示され、ボタンを離すと「Key status: 1」と表示されます。 ![](media/A160.png) **6. 知識拡張** 次に、ボタンの状態を通じてLEDを制御します。 **フローチャート:** ![](media/A161.png) **配線図:** ![](media/A162.png) **コード:** 1. 基本ブロックを2つドラッグします。 ![](media/A163.png) 2. LEDピンを「output」、ボタンピンを「input」に設定します。 ![](media/A164.png) 3. “Control”から「if else」ブロックをドラッグします。“Button”から「button pin」ブロックを「if」の後に追加し、ピンをIO15に設定します。「if」の下に「LED output」ブロックを置き、出力をHIGHに設定し、「else」の下にもう一つ置いてLOWに設定します。LEDピンは両方ともIO4です。 ![](media/A165.png) **完成コード:** ![](media/A166.png) **8. コード説明** **注意:ボタンモジュールを使用する際はピンモードを必ず「input」に設定してください。** 1. ボタンが押されているかどうかを判定します。押されていればこのブロックはtrueを表します。 ![](media/A167.png) 2. ボタンの値を読み取ります。ボタンが押されていないときは値が1、押されているときは0です。 ![](media/A168.png) 3. 六角形内の条件がtrueの場合、「if」ブロックが実行されます。そうでなければ「else」ブロックが実行されます。 ![](media/A169.png) 4. ボーレートを設定します。シリアルモニターの相手側とボーレートが一致していることを確認してください。そうでないと何も表示されません。一般的なボーレートは9600と115200で、ここでは9600に設定しています。 ![](media/A170.png) 5. シリアルモニターに文字を表示します。表示される文字は空欄に入力したものです。また、表示モードはwarp、no-warp、HEX(16進数)の3種類があります。 ![](media/A171.png)